import Foundation import ReplayKit extension CVImageBuffer { private static let contextQueue = DispatchQueue(label: "com.example.contextQueue") static let sharedContext: CIContext = { return CIContext() }() var cgImage: CGImage? { var result: CGImage? CVImageBuffer.contextQueue.sync { let ciImage = CIImage(cvImageBuffer: self) let width = CVPixelBufferGetWidth(self) let height = CVPixelBufferGetHeight(self) result = CVImageBuffer.sharedContext.createCGImage(ciImage, from: CGRect(x: 0, y: 0, width: width, height: height)) } return result } }